package org.devocean.groupbuying.service.mail;

import java.util.Set;

import org.devocean.groupbuying.domain.Customer;
import org.devocean.groupbuying.domain.Purchase;
import org.devocean.groupbuying.domain.SerialKey;
import org.devocean.groupbuying.domain.Voucher;
import org.devocean.groupbuying.service.CustomerService;
import org.devocean.groupbuying.service.PaypalPaymentService;

public interface MailService {
	/**
	 * Send an email in order to notify a new customer
	 * 
	 * @param Customer
	 * @see CustomerService
	 */
	void notifyNewCustomer(Customer customer);

	/**
	 * Send an email in order to notify a customer about personal informations
	 * update
	 * 
	 * @param Customer
	 * @see CustomerService
	 */
	void notifyUpdatedCustomer(Customer customer);

	/**
	 * Send an email that holds information about a cart payment.
	 * 
	 * @param Purchase
	 * @see PaypalPaymentService
	 */
	void confirmPayment(final Purchase purchase);

	void sendVoucher(Customer customer, Set<SerialKey> keys);
	
	/**
	 * Send an email that holds URI For redefinition of Password .
	 * 
	 * @param Customer
	 * @param URI
	 * @see CustomerController
	 */
	void forgotPassword(Customer customer, String uri);

}
